package com.mdb.open.trade.domain.bo.trade;

import com.mdb.bc.api.data.DataObjectBase;
import com.mdb.open.common.enums.trade.status.ClaimRepaymentStatusEnum;
import com.mdb.open.common.enums.trade.status.InwardClaimStatusEnum;
import com.mdb.open.common.enums.trade.type.ClaimTypeEnum;
import com.mdb.open.common.enums.trade.type.RemittancePurposeTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @description:
 * @author: you.yichao
 * @create: 2019-07-13 11:04
 **/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="SaveInwardClaimBo", description="保存汇入认领记录Bo对象")
public class SaveInwardClaimBo extends DataObjectBase {

    /**
     * 汇款编号
     */
    @ApiModelProperty(value = "汇款编号")
    @NotBlank(message = "汇款编号不允许为空")
    private String remitNo;

    /**
     * 认领编号
     */
    @ApiModelProperty(value = "认领编号")
    private String claimNo;

    /**
     * 客户编码
     */
    @ApiModelProperty(value = "客户编码")
    @NotBlank(message = "客户编码不允许为空")
    private String customerCode;

    /**
     * 客户名称
     */
    @ApiModelProperty(value = "客户名称")
    @NotBlank(message = "客户名称不允许为空")
    private String customerName;

    /**
     * 商户客户编码
     */
    @ApiModelProperty(value = "商户客户编码")
    private String mcustomerCode;

    /**
     * 商户编号
     */
    @ApiModelProperty(value = "商户编号")
    @NotBlank(message = "商户编号不允许为空")
    private String merchantNo;

    /**
     * 商户名称
     */
    @ApiModelProperty(value = "商户名称")
    @NotBlank(message = "商户名称不允许为空")
    private String merchantName;

    /**
     * 收款账号
     */
    @ApiModelProperty(value = "收款账号")
    private String receiveAcc;

    /**
     * 商户业务编号
     */
    @ApiModelProperty(value = "商户业务编号")
    private String businessNo;

    /**
     * 认领金额
     */
    @ApiModelProperty(value = "认领金额")
    private BigDecimal claimAmount;

    /**
     * 币种
     */
    @ApiModelProperty(value = "币种")
    @NotBlank(message = "币种不允许为空")
    private String ccy;

    /**
     * 用途
     */
    @ApiModelProperty(value = "用途")
    private RemittancePurposeTypeEnum purposes;

    /**
     * 认领类型
     */
    @ApiModelProperty(value = "认领类型")
    @NotBlank(message = "认领类型不允许为空")
    private ClaimTypeEnum claimType;

    /**
     * 余额认领
     */
    @ApiModelProperty(value = "余额认领")
    private BigDecimal balance;

    /**
     * 认领时间
     */
    @ApiModelProperty(value = "认领时间")
    private LocalDateTime claimDate;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态")
    @NotNull(message = "状态不允许为空")
    private InwardClaimStatusEnum status;

    /**
     * 还款状态
     */
    @ApiModelProperty(value = "还款状态")
    @NotBlank(message = "还款状态不允许为空")
    private ClaimRepaymentStatusEnum repaymentStatus;

}
